Skip to content

[Feat] Connect source control when Sessions need repository access - #2400

Open
roomote-roomote[bot] wants to merge 9 commits into
developfrom
feature/optional-source-control-3t76rtor3issz
Open

[Feat] Connect source control when Sessions need repository access#2400
roomote-roomote[bot] wants to merge 9 commits into
developfrom
feature/optional-source-control-3t76rtor3issz

Conversation

@roomote-roomote

@roomote-roomote roomote-roomote Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

​Created by Roomote. Follow up by mentioning @roomote-roomote, in the web UI, or in Slack.

Related issue

No linked issue. This implements the optional source-control and just-in-time Session connection request.

Why this PR exists

  • A maintainer explicitly invited this PR in the linked issue or discussion
  • I am a maintainer / this is internal Roomote work

Allow setup and general Sessions without repositories, while requiring verified access before repository work can continue.

What changed

  • Make source control optional during setup by default; explicit boolean optional_source_control_enabled: false preserves the legacy setup flow. Inference, compute, and repository-starter requirements remain intact.
  • Add durable, actor-bound connection requests, trusted provider authorization/configuration returns, exact-inventory synchronization, and transactional continuation admission.
  • Resume through the original web or chat surface as the requesting actor, with cancellation, expiry, supersession, fresh discovery, and operation-level revalidation. Preserve continuation guards if optional source control is disabled after admission.
  • Keep "Skip for now" durable across reloads and later visits by reading the existing receipt scoped to the setup Session, workflow version, and owner. Failed saves no longer dismiss the card, and successful saves invalidate status.
  • Integrate develop through 9dde5250, preserving both source-control and scheduling gates and the renamed automation-routing export. Regenerate the additive source-control table migration as 0080_mushy_timeslip after develop's immutable 0079_tan_amazoness.

Impact: users can connect repositories when needed without treating OAuth consent alone as authorization to resume stale work. This fixer run does not merge the PR, change deployed configuration, or perform a production rollout.

How it was tested

  • Earlier skip/conflict validation passed 463 distinct tests across web server (103), web client (8), cloud-agents (341), and database (11). New skip-persistence regressions failed before the fix and passed afterward, including independent PostgreSQL status reads and component remounts.
  • Web, cloud-agents, SDK, and DB TypeScript checks passed. Scoped lint/format checks and push hooks passed Oxlint, residual ESLint, all 27 fast typechecks, and Knip.
  • Migration validation preserved 157 immutable base artifacts and verified 81 journal entries with strictly increasing timestamps and linear snapshot ancestry. Generated 0080 SQL matches the prior complete PR table migration; a second generation reported no schema changes. Full migration-chain application and previously applied unpublished PR migration histories were not tested.
  • Test-only follow-up 439f7ee6 fixes the two stale rollout expectations while preserving explicit-false rejection coverage and leaving runtime policy unchanged. Before correction the isolated file had 18 passed and 2 failed; afterward all 20 passed, with 41 tests passing across four related suites in a serial isolated-database run. Fresh web TypeScript, Oxlint, ESLint, formatting, and normal push hooks passed. The focused completion check found no gaps in this test-only change.
  • Replacement CI on 439f7ee6 completed with 16 successful checks, two intentional skips, and no failures or pending jobs. Test passed, as did Roomote review, Type Check, Lint, Knip, Upgrade Compatibility, Fresh-host Backup Restore, Docker Build, and CodeQL.
  • Browser proof is not applicable to this test-only follow-up; no browser, simulation, or screenshots were used. The earlier skip-persistence UI proof remains blocked: development login succeeded, while /setup rendered no actionable setup card. No old proof artifacts are included. The earlier UI judge returned no usable result, so the test-only completion check does not establish UI proof.
  • Live OAuth, mobile login-return, and full mock-chat journeys remain unverified. Combined web project invocation hit an existing worker-configuration incompatibility; separate project runs passed. Full core tests were not run locally, and no changeset was added in this fixer pass.

Checklist

  • The PR title follows the repo convention: [Fix], [Feat], [Improve], [Refactor], [Docs], or [Chore] followed by a user-facing description
  • This PR is small and scoped to one change
  • pnpm lint and pnpm check-types pass locally
  • I added tests or included a clear manual validation note above
  • I removed secrets, tokens, private keys, and customer data from code, logs, and screenshots
  • If this change should appear in the changelog, I ran pnpm changeset

Related PRs

@roomote-community

roomote-community Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

No new code issues found. See task

  • Source-control skip is persisted, so the setup card remains hidden after reload.

Reviewed 439f7ee

@roomote-roomote
roomote-roomote Bot marked this pull request as ready for review September 9, 2026 14:47
Comment thread apps/web/src/app/(sandbox)/sessions/[sessionId]/setup/SetupSourceControlCard.tsx Outdated
@roomote-roomote

roomote-roomote Bot commented Sep 10, 2026

Copy link
Copy Markdown
Contributor Author

Fixed and pushed the stale rollout tests in 439f7ee6, following durable skip fix af67ea61 and develop conflict merge e1ea098c. Only the test file changed: explicit boolean false still rejects begin/completion/check actions, while string "true" and missing metadata verify the existing enabled policy. No runtime policy changes.

Fresh validation: the previously failing file now passes all 20 tests; four isolated, serial related suites pass 41 tests total. Web TypeScript, Oxlint, ESLint, formatting, and normal pre-commit/pre-push hooks passed, including all 27 fast typechecks. Earlier skip/conflict validation separately passed 463 tests. The focused test-only completion check found no gaps.

Replacement CI completed: 16 checks successful, two intentional skips, no failures or pending checks. Test passed, together with Roomote review, Type Check, Lint, Knip, Upgrade Compatibility, Fresh-host Backup Restore, Docker Build, and CodeQL. PR metadata is refreshed, and the original skip review thread remains resolved. GitHub reports no merge conflicts; its separate merge-state field was still blocked at the last read, so this does not claim merge approval.

Browser proof is not applicable to this test-only follow-up. No browser, screenshots, or simulation were used. Earlier skip UI proof remains blocked by the unavailable setup-card state; this test-only check does not establish UI proof or a passing earlier UI judge.

No PR merge, production/preview configuration change, rollout, or Cloud repository change. Cloud #237 remains closed historical context only.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants